#include "rte.h"
#include "application.h"
#include <stdlib.h>
#include <gtk/gtk.h>

static void helloWorld(GtkWidget *wid, GtkWidget *win)
{
	GtkWidget *dialog = NULL;

	dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_MODAL,
	                                GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,
	                                "Hello World!");
	gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
	gtk_dialog_run(GTK_DIALOG (dialog));
	gtk_widget_destroy(dialog);
}

class RuntimeEnvironmentTest : public cnc::rtl::Application
{
public:
	int main()
	{
		cnc::rtl::RuntimeEnvironment *rte = cnc::rtl::getRuntimeEnvironment();
		int argc = rte->getArgc();
		char **argv = rte->getArgv();
		GtkWidget *button = NULL;
		GtkWidget *win = NULL;
		GtkWidget *vbox = NULL;

		/* Initialize GTK+ */
		g_log_set_handler("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc)gtk_false, NULL);
		gtk_init(&argc, &argv);
		g_log_set_handler("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);

		/* Create the main window */
		win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
		gtk_container_set_border_width(GTK_CONTAINER(win), 8);
		gtk_window_set_title(GTK_WINDOW(win), "Hello World");
		gtk_window_set_position(GTK_WINDOW(win), GTK_WIN_POS_CENTER);
		gtk_widget_realize(win);
		g_signal_connect(win, "destroy", gtk_main_quit, NULL);

		/* Create a vertical box with buttons */
		vbox = gtk_vbox_new(TRUE, 6);
		gtk_container_add(GTK_CONTAINER(win), vbox);

		button = gtk_button_new_from_stock(GTK_STOCK_DIALOG_INFO);
		g_signal_connect(G_OBJECT(button), "clicked",
                                 G_CALLBACK(helloWorld), (gpointer)win);
		gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, TRUE, 0);

		button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
		g_signal_connect(button, "clicked", gtk_main_quit, NULL);
		gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, TRUE, 0);

		/* Enter the main loop */
		gtk_widget_show_all(win);
		gtk_main();
		return 0;
	}
} application;

